package locadora.dados;

import static org.junit.Assert.*;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import locadora.negocio.pessoas.Pessoa;
import miscelanea.Data;

import org.junit.BeforeClass;
import org.junit.Test;

public class RepositorioPessoaTest {
	
	static RepositorioPessoa repositorio;

	@BeforeClass
	public static void inicializa() throws Exception {
		repositorio = new RepositorioPessoa();
		Pessoa i1 = new Pessoa("Anderson", new Data("13021986"), "6334563", "SSPPE", "22233366638", null, "51790550", null, null, null);
		Pessoa i2 = new Pessoa("Victor", new Data("13021986"), "6334563", "SSPPE", "22233366638", null, "51790550", null, null, null);
		Pessoa i3 = new Pessoa("Renno", new Data("13021986"), "6334563", "SSPPE", "22233366638", null, "51790550", null, null, null);
		Pessoa i4 = new Pessoa("Eduardo", new Data("13021986"), "6334563", "SSPPE", "22233366638", null, "51790550", null, null, null);
		repositorio.adiciona(i1);
		repositorio.adiciona(i2);
		repositorio.adiciona(i3);
		repositorio.adiciona(i4);
	}

	@Test
	public void testArmazena() throws IOException {
		File file = new File(repositorio.NOME_ARQUIVO);
		
		file.delete();
		
		repositorio.armazena();
		
		assertTrue(file.exists());
	}

	@Test
	public void testBusca() throws Exception {
		Pessoa i = new Pessoa("Fanta", new Data("13021986"), "6334563", "SSPPE", "22233366638", null, "51790550", null, null, null);
		String q2 = "0";
		
		Pessoa a1 = repositorio.busca(i.getChave());
		assertNotNull(a1);
		
		assertNull(repositorio.busca(q2));
	}

	@Test
	public void testAdiciona() throws Exception {
		Pessoa i5 = new Pessoa("Fanta", new Data("13021986"), "6334563", "SSPPE", "22233366638", null, "51790550", null, null, null);
		
		repositorio.adiciona(i5);
		
		assertNotNull(repositorio.busca(i5.getChave()));
	}

	@Test
	public void testListarObjetos() {
		ArrayList<Object> lista = repositorio.ListarObjetos();
		
		assertTrue(lista.equals(repositorio.arrayPessoa));
	}

	@Test
	public void testRemove() throws Exception {
		Pessoa i5 = new Pessoa("Fanta", new Data("13021986"), "6334563", "SSPPE", "22233366638", null, "51790550", null, null, null);
		
		repositorio.adiciona(i5);
		
		repositorio.remove(i5.getChave());
		
		assertNotNull(repositorio.busca(i5.getChave()));
	}

}
